using ImageCSharp.Core.Interfaces;
using System.Collections.ObjectModel;
using ImageCSharp.Core.Models;

namespace ImageCSharp.Core.Interfaces
{
    /// <summary>
    /// 插件服务接口
    /// </summary>
    public interface IPluginService
    {
        /// <summary>
        /// 初始化插件系统
        /// </summary>
        void Initialize();

        /// <summary>
        /// 加载插件
        /// </summary>
        void LoadPlugins();

        /// <summary>
        /// 获取所有滤镜插件
        /// </summary>
        ObservableCollection<IFilterPlugin> GetFilterPlugins();

        /// <summary>
        /// 获取所有选择工具插件
        /// </summary>
        ObservableCollection<ISelectionPlugin> GetSelectionPlugins();

        /// <summary>
        /// 获取所有绘图工具插件
        /// </summary>
        ObservableCollection<IDrawingPlugin> GetDrawingPlugins();

        /// <summary>
        /// 执行插件
        /// </summary>
        void ExecutePlugin(IImagePlugin plugin, ImageDocument document);
    }
}